/*
 * 版权 (c) 1996, 2013，Oracle及其附属公司。保留所有权利。
 * ORACLE 专有/机密。使用受许可条款约束。
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */

package java.lang.reflect;

/**
 * Member 是一个接口，用于反射单个成员（字段或方法）或构造函数的标识信息。
 *
 * @see java.lang.Class
 * @see Field
 * @see Method
 * @see Constructor
 *
 * @author Nakul Saraiya
 */
public interface Member {

    /**
     * 标识类或接口的所有公共成员的集合，包括继承的成员。
     */
    public static final int PUBLIC = 0;

    /**
     * 标识类或接口的声明成员的集合。不包括继承的成员。
     */
    public static final int DECLARED = 1;

    /**
     * 返回表示声明此Member所表示的成员或构造函数的类或接口的Class对象。
     *
     * @return 表示此Member所表示的成员的声明类的对象
     */
    public Class<?> getDeclaringClass();

    /**
     * 返回此Member所表示的成员或构造函数的简单名称。
     *
     * @return 此Member所表示的成员的简单名称
     */
    public String getName();

    /**
     * 返回此Member所表示的成员或构造函数的Java语言修饰符，作为一个整数。
     * 应使用Modifier类来解码整数中的修饰符。
     *
     * @return 此Member所表示的成员的Java语言修饰符
     * @see Modifier
     */
    public int getModifiers();

    /**
     * 如果此成员是由编译器引入的，则返回{@code true}；否则返回{@code false}。
     *
     * @return 如果此成员是由编译器引入的，则返回true，否则返回false。
     * @jls 13.1 二进制的形式
     * @since 1.5
     */
    public boolean isSynthetic();
}
